[SystemVerilog]
lexer=verilog

# Taken from the SystemVerilog IEEE Std 1800-2005 Annex B
keywords.0=name:Keywords::alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf bufif0 bufif1 byte case \
casex casez cell chandle class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design \
disable dist do edge else end endcase endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage \
endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event expect export extends extern final first_match for force foreach \
forever fork forkjoin function generate genvar highz0 highz1 if iff ifnone ignore_bins illegal_bins import incdir include initial inout input inside \
instance int integer interface intersect join join_any join_none large liblist library local localparam logic longint macromodule matches medium modport \
module nand negedge new nmos nor noshowcancelled not notif0 notif1 null or output package packed parameter pmos posedge primitive priority program \
property protected pull0 pull1 pulldown pullup pulsestyle_onevent pulsestyle_ondetect pure rand randc randcase randsequence rcmos real realtime \
ref reg release repeat return rnmos rpmos rtran rtranif0 rtranif1 scalared sequence shortint shortreal showcancelled signed small solve specify specparam \
static string strong0 strong1 struct super supply0 supply1 table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 \
triand trior trireg type typedef union unique unsigned use uwire var vectored virtual void wait wait_order wand weak0 weak1 while wildcard wire with within \
wor xnor xor

# Secondary keywords and identifiers
#keywords.1=name:Secondary keywords::

# System Tasks
keywords.2=name:System Tasks::$acos $acosh $asin $asinh $assertfailoff $assertfailon $assertkill \
$assertnonvacuouson $assertoff $asserton $assertpassoff $assertpasson $assertvacuousoff $async$and$array $async$and$plane $async$nand$array \
$async$nand$plane $async$nor$array $async$nor$plane $async$or$array $async$or$plane $atan $atan2 $atanh $bits $bitstoreal $bitstoshortreal $cast \
$ceil $changed $changed_gclk $changing_gclk $clog2 $cos $cosh $countdrivers $countones $coverage_control $coverage_get $coverage_get_max $coverage_merge \
$coverage_save $dimensions $display $displayb $displayh $displayo $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson \
$dist_t $dist_uniform $dumpall $dumpfile $dumpflush $dumplimit $dumpoff $dumpon $dumpports $dumpportsall $dumpportsflush $dumpportslimit $dumpportsoff \
$dumpportson $dumpvars $error $exit $exp $falling_gclk $fatal $fclose $fdisplay $fdisplayb $fdisplayf $fdisplayh $fdisplayo $fell $fell_gclk $feof \
$ferror $fflush $fgetc $fgets $finish $floor $fmonitor $fmonitorb $fmonitorf $fmonitorh $fmonitoro $fopen $fread $fscanf $fseek $fsscanf $fstrobe $fstrobeb \
$fstrobebb $fstrobef $fstrobeh $fstrobeo $ftel $ftell $fullskew $future_gclk $fwrite $fwriteb $fwritef $fwriteh $fwriteo $get_coverage $getpattern $high \
$history $hold $hypot $increment $incsave $info $input $isunbounded $isunknown $itor $key $left $list $ln $load_coverage_db $log $log10 $low $monitor \
$monitorb $monitorh $monitoro $monitoroff $monitoron $nochange $nokey $nolog $onehot $onehot0 $past $past_gclk $period $pow $printtimescale $q_add $q_exam \
$q_full $q_initialize $q_remove $random $readmemb $readmemh $realtime $realtobits $recovery $recrem $removal $reset $reset_count $reset_value \
$restart $rewind $right $rising_gclk $root $rose $rose_gclk $rtoi $sampled $save $scale $scope $sdf_annotate $set_coverage_db_name $setup $setuphold \
$sformat $sformatf $shortrealtobits $showscopes $showvariables $showvars $signed $sin $sinh $size $skew $sqrt $sreadmemb $sreadmemh $sscanf $stable \
$stable_gclk $steady_gclk $stime $stop $strobe $strobeb $strobeh $strobeo $swrite $swriteb $swriteh $swriteo $sync$and$array $sync$and$plane \
$sync$nand$array $sync$nand$plane $sync$nor$array $sync$nor$plane $sync$or$array $sync$or$plane $system $tan $tanh $test$plusargs $time \
$timeformat $timeskew $typename $ungetc $unit $unpacked_dimensions $unsigned $urandom $urandom_range $value$plusargs $warning $width $write $writeb $writeh \
$writememb $writememh $writeo

# User defined tasks and identifiers
#keywords.3=name:User defined tasks and identifiers::
                          
style.32=name:Default
style.0=name:White space,fore:#808080
style.1=name:Comment,fore:clGreen
style.2=name:Line Comment,fore:clGreen
style.3=name:Bang comment,fore:#3F7F3F,back:#E0F0FF,eolfilled
style.4=name:Number,fore:clTeal
style.5=name:Keyword,fore:clNavy,bold
style.6=name:Double quoted string,fore:clPurple
style.7=name:Keyword2,fore:#007F7F
style.8=name:System tasks,fore:#804020
style.9=name:Preprocessor,fore:#7F7F00
style.10=name:Operators,fore:#007070
style.11=name:Identifiers
style.12=name:Eol string not closed,fore:#000000,back:#E0C0E0,eolfilled
style.19=name:User defined identifiers and tasks,fore:#804020